//
//  SMNetworkManager.h
//  Uhou_Framework
//
//  Created by Sunny on 16/1/20.
//  Copyright © 2016年 Sunny. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "SMAFNetworkDelegate.h"
#import "SMNetworkDefine.h"
@class SMAFNetworkUpParam;

/**
 *  AF网络请求封装
 */
@interface SMAFNetworkManager : NSObject

/**
 *  返回单例
 *
 *  @return 网络单例
 */
+ (instancetype) sharedInstance;


/**
 *   GET请求通过Block 回调结果
 *
 *   @param url          url
 *   @param paramsDict   paramsDict
 *   @param requestId    requestId
 *   @param successBlock  成功的回调
 *   @param failureBlock  失败的回调
 *   @param showHUD      是否加载进度指示器
 */
+ (void) getRequstWithURL:(NSString*) url
                   params:(NSDictionary*) paramsDict
                requestId:(NSString *) requestId
             successBlock:(SMAFSuccessBlock) successBlock
             failureBlock:(SMAFFailureBlock) failureBlock
                  showHUD:(BOOL) showHUD;
/**
 *   GET请求通过代理回调
 *
 *   @param url         url
 *   @param paramsDict  请求的参数
 *   @param requestId    requestId
 *   @param delegate    delegate
 *   @param showHUD    是否转圈圈
 */
+ (void) getRequstWithURL:(NSString*) url
                   params:(NSDictionary*) paramsDict
                requestId:(NSString *) requestId
                 delegate:(id<SMAFNetworkDelegate>) delegate
                  showHUD:(BOOL) showHUD;
/**
 *   get 请求通过 taget 回调方法
 *
 *   @param url         url
 *   @param paramsDict  请求参数的字典
 *   @param requestId    requestId
 *   @param target      target
 *   @param action      action
 *   @param showHUD     是否加载进度指示器
 */
+ (void)getRequstWithURL:(NSString*)url
                  params:(NSDictionary*)paramsDict
               requestId:(NSString *) requestId
                  target:(id)target
                  action:(SEL)action
                 showHUD:(BOOL)showHUD;


#pragma mark - 发送 POST 请求的方法
/**
 *   通过 Block回调结果
 *
 *   @param url           url
 *   @param paramsDict    请求的参数字典
 *   @param requestId    requestId
 *   @param successBlock  成功的回调
 *   @param failureBlock  失败的回调
 *   @param showHUD       是否加载进度指示器
 */
+ (void)postReqeustWithURL:(NSString*)url
                    params:(NSDictionary*)paramsDict
                 requestId:(NSString *) requestId
              successBlock:(SMAFSuccessBlock)successBlock
              failureBlock:(SMAFFailureBlock)failureBlock
                   showHUD:(BOOL)showHUD;
/**
 *   post请求通过代理回调
 *
 *   @param url         url
 *   @param paramsDict  请求的参数
 *   @param requestId    requestId
 *   @param delegate    delegate
 *   @param showHUD    是否转圈圈
 */
+ (void)postReqeustWithURL:(NSString*)url
                    params:(NSDictionary*)paramsDict
                 requestId:(NSString *) requestId
                  delegate:(id<SMAFNetworkDelegate>)delegate
                   showHUD:(BOOL)showHUD;
/**
 *   post 请求通过 target 回调结果
 *
 *   @param url         url
 *   @param paramsDict  请求参数的字典
 *   @param requestId    requestId
 *   @param target      target
 *   @param showHUD     是否显示圈圈
 */
+ (void)postReqeustWithURL:(NSString*)url
                    params:(NSDictionary*)paramsDict
                 requestId:(NSString *) requestId
                    target:(id)target
                    action:(SEL)action
                   showHUD:(BOOL)showHUD;

/**
 *
 *
 *  @param url
 *  @param paramsDict
 *  @param successBlock
 *  @param failureBlock
 *  @param showHUD      显示 HUD
 */

/**
 *  上传文件
 *
 *  @param url          上传文件的 url 地址
 *  @param paramsDict   参数字典
 *  @param requestId    请求ID
 *  @param successBlock 成功
 *  @param failureBlock 失败
 *  @param uploadParam  上传图片 uploadParm中直接添加UIImage
                        上传视频 uploadParm中添加ALAsset
 *  @param showHUD      是否显示圈圈
 */
+ (void)uploadFileWithURL:(NSString *)url
                   params:(NSDictionary *)paramsDict
                requestId:(NSString *) requestId
             successBlock:(SMAFSuccessBlock)successBlock
             failureBlock:(SMAFFailureBlock)failureBlock
              uploadParam:(SMAFNetworkUpParam *)uploadParam
                  showHUD:(BOOL)showHUD;

@end
